2024 Bahrain Grand Prix¶
sabah alkhayr ya mudirin and welcome to the first race report for the 2024 Fantasy F1 league! We finally made it through the off-season, and what a chaotic time it has been since the chequered flag fell in 2023.
In case you've been living under a rock for the last few months, here's a brief summary of some of the major events that have happened since we saw Max doing donuts in Abu Dhabi. Lewis Hamilton signed a multi-year deal with Ferrari, breaking his contract with Mercedes a year early, and joining the Scuderia in 2025 and beyond. The Brit will replace Carlos Sainz, who is yet to sign a replacement contract. Alfa Romeo left the sport and the Sauber team re-branded as Stake F1 Kick Sauber, though this name is not the official name as Stake is banned in a lot of countries, including Switzerland where the Sauber brand is based. The team launched their bright green machine and immediately realised that they may have to rename themselves Kick Sauber. Guenther Steiner, the legend of Driver To Survive, was let go by Haas F1 with immediate effect. There was little explanation for the departure of the iconic team principle, from the American outfit, but it seems like a knee-jerk reaction from a team struggling to stay afloat in an expensive business. Alpine launched a disastrous car with very little in the way of paint, with their team losing some key members from the team in the last few weeks. The French outfit are looking to be the worst on the grid in testing and it can only get better from here. Though, after the sacking of their team principle last year, the Enstone team have had nothing but issues. Then there's the Christian Horner investigation. I am not going to comment much on this because it has been dropped by parent company Red Bull GmbH after an independent investigation. Rumours are circling and I'm sure, if there is any truth behind them, it will all come out in the wash.
Grand Prix Report¶
Without any further adieu, let's get in to the race report for the 2024 Bahrain Grand Prix. For those who are new to this life, these weekly reports typically start with a brief report of the weekend, followed by a report of the top 5 and bottom 5 weekly scorers in the league, then it's time for the top 5 and bottom 5 in the championship, any relevant prizes to be awarded, some comments about how my code is broken and I haven't got the figures, a reminder about the F1 play competition, and a look to the next race.
Qualifying Report¶
It may have been 3 months, an entire off-season of development, rumours about Mercedes and mcLaren during testing, and a complete re-design of the most dominant car in F1 history, but it's business as usual at the front for the reigning world champion. After reporting some handling issues and gearbox issues in free practice, Max went on to secure a comfortable pole position on Friday evening in Bahrain. The Dutchman was a good 3 tenths of a second ahead of nearest competitor Charles Leclerc, who recently signed a multi-year extension at the Italian team. It was significantly closer going down the field, with George Russell showing some good pace in third, Sainz in fourth, Perez in fifth, and the hero of 2023 Fernando Alonso in sixth place. If this is indicative of the season ahead, we are in for a close competition behind Max.
Some standout performances include Nico Hulkenberg, who after new team principle Komatsu said "we are the slowest car", popped his newly designed Haas into Q3 1 second behind 7 time champion Lewis Hamilton. Teammate Kevin Magnussen also managed to scrape a Q2 appearance, making it a strong opening gambit from Haas.
Things are not well at the French team of Alpine it seems. With senior members resigning, their owner brandishing wild claims in the media, a list of A-listers sent in last season to provide investment, a paint-less car, and weak testing performance, neither Alpine was able to make it off the back row of the grid. There are some serious reliability concerns down at Alpine too, with the team worried if they will survive the hotter Grand Prix of the year. There's much work to be done and everyone is being very positive on social media, but if last year taught us anything, it's that Gasly and Ocon are not team players with each other.
Race Report¶
As races go, that was definitely one of them. It wasn't exactly what we have come to expect from Formula 1 in the not-too-distant past, but it is certainly what we have come to expect from Max Verstappen in the last year or so. The Dutchman romped home to a 22-second victory over teammate Sergio Perez. There was never really a moment of doubt for Max, despite Sky Sports claiming Leclerc nearly collided with him into turn 1. It was a strong performance from Perez though, who was able to cleverly preserve his tyres and pick his battles in a rare turn of form from the Mexican driver.
Despite a third and fourth place, things are clearly not ok at Ferrari. Carlos Sainz is clearly out to prove a point this year, and honestly I don't blame him at all. The Spanish star was the only non-Red Bull driver to win a Grand Prix in 2023, and was dropped at the first opportunity in favour of Hamilton, who let's not forget hasn't won a race since Saudi Arabia 2021. Frustrated behind his teammate, who seemed to be suffering with brakes, Sainz took the opportunity to pass into turn 1 and he never looked back. Pulling back a gap to Perez, but sadly to no effect.
It seems to be fairly close between the McLarens, Mercedes, and (in the right conditions) the Astons. George, Norris, Lewis, and Oscar were all fairly close throughout the race, with Fernando seemingly running his own race not too far behind. These three teams are going to make or break the fight for second in the championship this year if they can close that gap to Ferrari later in the year. It is certainly going to be close.
Not something that I have spoken about yet, but the newly branded RB team, or Visa CashApp Racing Bulls, or whatever name they're going by, is becoming quite the hotbed for that second Red Bull seat. It's been no secret in the past that Red Bull typically promote from their junior team. It's also no secret that Yuki Tsunoda is tipped to replace Sergio Perez, that was until Ricciardo arrived back on the scene. McLaren's last race winner is keen to make a return to the top team before his time is up, and Yuki knows it. After the race, and after that team swap call, Yuki dive bombed Danny into the hairpin and came up alongside to show the team how upset he was with the decision.
Things look to be ok at Alpine with the team gaining two places for each driver, however if you actually look at why they gained positions, it's not good news. Hulkenberg, Bottas, and Stroll collided into turn 1, and Sargeant's shiny new dash caused brake bias chaos into turn 4, thus promoting the two French drivers. Despite Hulk's crash, the Alpines had no answer for the Haas pace.
This is, however, the first time in F1 history that all cars have finished the opening race. A nice way to start the first season where all drivers have progressed from the previous season. A race of firsts in the history of our sport.
Fantasy League Scores¶
Lineup Scores¶
Right, let's get into it then, who came out on top in the fantasy league, and who's wallowing in misery at the bottom of the league after only the first week? Well to start with, we have to take a look at the Driver/Team points for the 2024 grid.
A little bit of background info, a peak behind the curtain if you will. The driver/team points and values are recorded as shown below. The values are counted on the day after the race for the next race. Points are counted at the same time. The points given are a total and then my code corrects between the total score previously and the total score now to calculate weekly scores. This is the path of least resistance for me as it allows me to just scroll the team sheet and enter the points and values next to each name.
import subprocess
import src.dataIO as io
from pathlib import Path
year = 2024
race = 'Bahrain'
weekly_scores = {
"Name": ["Points", "Value"],
"Race": [f'{race}'],
"Ocon": [7, 7.8],
"Gasly": [6, 7.8],
"Stroll": [8, 10.7],
"Alonso": [7, 15.8],
"Leclerc": [22, 19.1],
"Sainz": [36, 18.5],
"Magnussen": [7, 6.2],
"Hulkenberg": [-3, 6.4],
"Bottas": [0, 6.4],
"Guanyu": [11, 6.6],
"Norris": [16, 23.0],
"Piastri": [10, 19.0],
"Hamilton": [12, 19.3],
"Russell": [20, 18.8],
"Tsunoda": [-1, 8.0],
"Ricciardo": [5, 9.0],
"Verstappen": [45, 30.0],
"Perez": [31, 20.8],
"Albon": [0, 7.0],
"Sargeant": [3, 5.5],
"Alpine": [12, 6.4],
"Aston Martin": [20, 13.6],
"Ferrari": [73, 19.3],
"Haas": [9, 6.3],
"Kick Sauber": [10, 6.6],
"McLaren": [36, 23.2],
"Mercedes": [42, 20.1],
"RB": [7, 8.5],
"Red Bull": [89, 27.9],
"Williams": [4, 6.3]}
root = Path().absolute()
io.save_json_dicts(
out_path=Path(f'{root}/Data/{year}/Lineup_Weekly.json'),
dictionary=weekly_scores)
subprocess.run(["python", "lineup.py", f'{year}'])
CompletedProcess(args=['python', 'lineup.py', '2024'], returncode=0)
Max Verstappen takes an early lead in the fantasy league scores, coming in with a mega 45 points with a pole, fastest lap, and race win. Beating his teammate Sergio Perez has giving the early advantage to Ferrari's Carlos Sainz who take second with 36 points. Perez is close behind with 31 points scored this weekend, with another Ferrari appearance from Charles Leclerc in fourth. Rounding out the top five is George Russell with 20 points after a strong early showing from the Mercedes team in Bahrain. Despite a strong performance in qualifying and a good race pace, Nico Hulkenberg lands himself at the bottom of the table with -3 points, closely followed by Yuki Tsunoda, who suffered a lot of dropped places and a beating from his teammate. Albon and Bottas score a pair of zeros, with Logan Sargeant taking the early lead at Williams, rounding out the bottom five. Naturally, at this stage, the Bahrain scores and Total Scores are the same.
In the Constructor's game, it's an early lead for Red Bull and Ferrari, who bring home a solid result of 89 and 73, respectively. A poor weekend for Williams and RB see them take the first honours at bottom of the table with 4 and 7, respectively. This is largely due to some semi-decent qualifying pace but positions lost throughout the race. There's plenty of time for these teams to claw back some honour.
points_files = [
'Driver_Points_Bar.png',
'Team_Points_Bar.png',
'Driver_Sum Points.png',
'Team_Sum Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [Path(f'{directory_path}/{race}_{file}') for file in points_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
[None, None, None, None]
Max maintains his high price from last year, out-pricing Red Bull as the most expensive entry on the team sheet list. The prices are quite shocking this year, with even Lando Norris coming in at a very high price. There's little to say on the price list and the average points score, but check back here for future races to see the progress.
average_files = [
'Driver_Values_Bar.png',
'Team_Values_Bar.png',
'Driver_Average Points.png',
'Team_Average Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [
Path(f'{directory_path}/{race}_{file}') for file in average_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
[None, None, None, None]
Josh's pick of the week goes to Carlos Sainz, who brings home the highest points per value score of 1.95. The Spanish driver smashes it out of the park by taking the strategy in to his own hands and thrashing both highly priced Red Bull drivers. Surprisingly Guanyu Zhou scores a mega 1.67 points per million, continuing his streak as "best of the picks" from last season. The trend of Ferrari getting the better slice of the fantasy pie continues in the team game, with the points per value coming out on top with 3.78. If you're playing the averages game, they are certainly one to pick.
ppv_files = [
'Driver_Points Per Value_Bar.png',
'Team_Points Per Value_Bar.png',
'Driver_Average Points Per Value.png',
'Team_Average Points Per Value.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [Path(f'{directory_path}/{race}_{file}') for file in ppv_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
[None, None, None, None]
subprocess.run(["python", "manager.py", f'{year}'])
CompletedProcess(args=['python', 'manager.py', '2024'], returncode=0)
Manager Scores¶
Now let's look at the winners and losers between you lot. Who's taking the early honour and glory? Rookie manager Stefanus and Haryanto take the first top step of the year with a score of 238 points, as if that wasn't enough Stefanus is also taking second place with Syahrul and 231 points. Seasoned veteran Stuart is taking the final podium step with Christian's Hornie and 220 points. Josh and Petrobras Williams RBS F1 is next up with 216 points, while Charlie and Uncle Moe's Family Speedbag round out the top five with 210 points.
It's first blood to Patrick and Racing No Points in the Golf League with a mega 40 points, just four ahead of reigning champions Bwoah Rolex Sipsmith Golf and manager James Reckitt with 44 points. There have been some big changes down at Bwoah industries in the off-season, but clearly they are yet to hit the ground running. Charlie and Lee Carvallo's F1 Challen are third this week with 46 points, just one ahead of Will and The Big One with 47. Rounding out the bottom five is Andrew and sBinnala Yacht Club with 48 points. It's all very tight straight away at the bottom of the table.
team_files = [
'LeagueTeams_Points_Bar.png',
'LeagueManagers_Average Points_Bar.png',
'LeagueTeams_Sum Points.png',
'LeagueManagers_Sum Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [
Path(f'{directory_path}/{race}_{file}') for file in team_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
[None, None, None, None]
After mild success last year, Alex Albon tops the list as the most used driver for Bahrain in the league with 33 of 61 teams running the Thai driver this weekend. Daniel Ricciardo comes a close second with 31 selections, while the reigning world champion only managed 28 of the 61 teams this week. That's quite surprising given his dominant run last year.
All 20 drivers made the selection this week, but George Russell only qualified for 3 of the 61 teams, despite putting in a solid performance. The other least selected drivers make for a grim tale of the points system. Sergio Perez and Lance Stroll, both drivers who are priced similarly to their teammates and are usually beaten. Perhaps that will change as we progress through the year.
Ferrari top the selection for the constructors this week, with a total of 23 of 61 potential selections. New team RB come a close second, but it was Alpine who were only chosen twice in 61 potential options. No surprise there, given their testing performance.
There were no uses of the Extra DRS token this week, which is unusual as a lot of people tend to pop it early for a glory run. Max topped the DRS boost usage with 28 of 61 uses, by far and away the most used there. 5 Auto Pilot tokens were used in the first race. This is quite a good time to use the Auto Pilot token while things are still fairly unknown.
count_files = [
'LeagueCounts_Driver_Bar.png',
'LeagueCounts_Constructor_Bar.png',
'LeagueCounts_DRS Boost_Bar.png',
#'LeagueCounts_Extra DRS_Bar.png',
'LeagueCounts_Perks_Bar.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [
Path(f'{directory_path}/{race}_{file}') for file in count_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
[None, None, None, None]
For more figures, please see the Facebook group album.
Prizes¶
In future races, I will detail more about prize progress, spot prizes, and other items here.
F1 Play¶
Stuart takes the early lead in the F1 play league this year, scoring 3/10. Matty and Josh were only able to secure a 2/10 in the opening race.
F1_play = {
"Stuart S": [3],
"Matty J": [2],
"Josh M": [2]}
Next Up¶
Next up we take to the streets of Jeddah in Saudi Arabia. Jeddah has provided some chaotic races since its inception, but last year was rather tame by comparison. Will it be another snooze fest? Who knows, but what I do know is that there is a prize for the highest scoring team. So, is it time to pop your tokens for a prize? Or are you saving them for later in the year? Good luck to you all.